package com.pengcheng.spring.bean;

import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;

/**
 * 工厂bena
 * 普通bean
 * 区别：
 * 1、Person= 普通bean，注册的组件对象就是 Person 对象，类似就是 Person
 * 2、工厂bean = 实现了 FactoryBean接口的组件。注册的不是 HelloFacotry。
 * 		而是 HelloFactory 这个工厂调用了 getObject() 返回的对象，类型是getObjectType() 指定的类型
 * Mybatis 和 Spring 的整合 SqlSessionFactoryBean
 */
@Component // 也可以实现 SmartFactoryBean。指定提前加载
public class HelloFactory implements FactoryBean<Hello> {

	@Override
	public Hello getObject() throws Exception {
		return new Hello(); // 这是最终获取到的对象
	}

	@Override
	public Class<?> getObjectType() {
		return Hello.class;
	}
}
